﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class RobT:Robot
    {
        public RobT()
        {
            this.Tipo = "T";
        }


        public override void ElegirRuta(Laberinto lab)
        {//Abajo Izquierda Frente Derecha Atras Arriba (D L F R B U)
            //setear salida
            int costoMax = 0;
            int costoAux = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoDown;
            if (costoMax <= costoAux && costoAux != int.MaxValue&& lab.GoalDown != null )//Para asegurarme que no esté en el caso 2D
            {
                costoMax = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoDown;
                this.Salida = "D"; 
            }
            costoAux = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoLeft;
            if (costoMax <= costoAux && costoAux!=int.MaxValue) //Si el costo es mayor o igual, para que en caso igual elija este por orden de preferencias
            {
                costoMax = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoLeft;
                this.Salida = "L";
            }
            costoAux = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoFront;
            if (costoMax <= costoAux && costoAux != int.MaxValue)
            {
                costoMax = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoFront;
                this.Salida = "F";
            }
            costoAux = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoRight;
            if (costoMax <= costoAux && costoAux != int.MaxValue)
            {
                costoMax = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoRight;
                this.Salida = "R";
            }
            costoAux = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoBack;
            if (costoMax <= costoAux && costoAux!=int.MaxValue)
            {
                costoMax = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoBack;
                this.Salida = "B";
            }
            costoAux = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoUp;
            if (costoMax <= costoAux && lab.GoalUp != null && costoAux != int.MaxValue)
            {
                costoMax = lab.Terreno[this.Coordenadas[0], this.Coordenadas[1], this.Coordenadas[2]].CostoUp;
                this.Salida = "U";
            }
        }
    }
    
}
